TICL stands for Tag Interface Component Library. It is a JSP tag library of WEB interface components. The product was developed in 2001 after a disappointed with the predominant technologies at the time (Struts et al.). A major goal of TICL is to bring RAD-like development to the WEB platform. Programmers can concentrate on logical functionality and build JSP pages by placing TICL components through tags and responding to user events. Every component is self-contained and manages interaction with the end-user with little or no assistance on the programmer's part. Visual appearance of components is abstracted into a high-level styles framework.

TICL enjoyed a short success and was purchased by companies such as Oracle and Goldman Sachs. It was reportedly used to teach high-school students about web programming and in many academic projects.

A technology founded on similar architecture is JavaServer(tm) Faces, a standartized web UI component framework that has gained a fair share of popularity. Our recent experience with that technology has resulted in a serious disappointment as well, so we've decided to keep TICL around and perhaps revive it if there is interest.


What you will find in TICL hide 

Here is an overview of what TICL has to offer:

   A complete server-side GUI component framework and a toolkit API.
  hide details  details 
 

TICL is not only a set of tags generating some HTML content. It is a complete toolkit of interactive user interface WEB components that can be manipulated as any other Java bean. In a sense, it is very similar architecturally to the new Microsoft .NET platform and in some cases it offers even more flexibility and functionality. The tags themselves serve merely as a syntactic interface to the components, which encapsulate behaviour, state and user-interaction logic. State management is separated from components. You can choose to store state in rewrite URLs or in the JSP session, or even provide your own component state manager. Naturally, you can write custom component and corresponding tags and plug them in the framework.

   A powerful, flexible and extensible server-side event model.
  hide details  details 
 

The server-side event model in TICL encompasses what in mainstream, MVC-based JSP programming is referred to as the controller logic. Each HTTP request is transformed into a sequence of server-side events representing user actions, which are then processed by programmer defined event listeners. Even the predefined behaviour of all TICL components is implemented through default event listeners of standard TICL events. The event model is architected similarly to the Java Beans event model. However, due to the paradigm differences between conventional desktop application development and browser-based WEB development, several other abstractions such as event factories, event brokers and event dispatchers have been added in order to provide more flexibility in terms of design choices.

You can define event listeners for all TICL component related events. You can control the event engine by inserting new events in the event queue during processing and/or by cancelling the handling of current events. You can also define your own event types and have them processed by the event engine, thus plugging your business logic into the TICL event model.

   Tabbed pane, table view, tree view, panel, menu components and more...
 hide details 
 

As you would do in conventional desktop RAD environment, you simply place those familiar components in your JSP page by writing the corresponding tags and configuring them through tag attributes, all in a purely declarative manner. They are self-contained functional units and they behave as you would expect them to. You can nest them into one another and combine them as you wish in order to obtain a single JSP page acting as a complete program! A few quick code samples give a better pictures:

TabbedPane
Here is how you could define a tabbed pane. You can provide the content of individual tabs either inline within the body of a tabItem tag or by specifying an external file to be dynamically included:

<t:tabbedPane id="myTabs" position="top">
  <t:tabItem name="tab1" caption="First Tab" include="samplefirsttab.jsp"/>
  <t:tabItem name="tab2" caption="Second Tab">
    This is the second tab. I can place any JSP code here.
  </t:tabItem>
</t:tabbedPane>
The above code (copied verbatim) yields the following component:

 First Tab  Second Tab  

Error

Description

javax.servlet.jsp.JspException: While performing tabitem First Tab include: java.io.FileNotFoundException: /samplefirsttab.jsp
Please report this problem to webmaster@kobrix.com.